📜 [專欄新文章] Solidity Weekly #21
✍️ mingderwang
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
ConsenSys — Ethereum Smart Contract Best Practices
了解資安相關問題,學會使用資安工具,是寫 solidity 智能合約,再重要不過的必經之路了。
ConsenSys 公司在這裡,Ethereum Smart Contract Best Practices,網頁裡,介紹不少容易產生資安漏洞的錯誤寫法以及正確寫法的範例,也列舉不少開發 Solidity 程式相關的資安工具。
一個很重要的基本概念,就是程式甚至 protocol 或電腦語言,不可能是完美的。但智能合約的特性,卻又是 deploy 後不能修改 (immutable)。當有問題的寫法被發現或當時用的編譯器版本確定有瑕疵時,所以所有 (包括原本可能被認為沒問題) 的合約,一開始就應該準備好 ”能抽換的機制”。如果沒有抽換機制,也要在發現問題的最短時間內,把 users 的資產,正確的轉移到新的合約,並要求 users 正確使用新的合約地址。甚至要讓 users 再三確認資產都已正確的轉移。
而什麼是,正確的抽換機制?我想不單純只要能更新版本就好。程式架構也一開始就要做對,邏輯與資料 (ether,tokens 或資產) 要分開,程式模組化要做好,程式越簡單越好。上架前要有足夠的測試和測試涵蓋率。上架後更要有連續的資安監控與維運,且不斷的進行甚至於程式改良。跟一般軟體工程一樣,不是 ”部署” 後就結束了,反而是重頭戲的開始。
套一句 DevOps 基本概念的話:要假設事情會出錯,所以要不斷的監控 (monitoring)、改進 (iteration)、與學習 (learning) 才有辦法解決智能合約的資安問題。尤其這直接跟金錢或數位資產有關,更不能大意。
還沒替您智能合約做好資安防護的工程師們,還是趕快從今天介紹的 ConsenSys 這個網站看起。不介意看簡體中文者,可以直接看 這裡。當然也希望有人自告奮勇,趕快翻譯個 繁體中文版,供大家參考。
Solidity Weekly #21 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌